package leetcode;
import java.util.ArrayList;
import java.util.List;

/**
 * 2017年8月28日
 */

/**
 * @author Alex
 *
 */
public class SprialMatrix {
	public static void main(String[] args) {
		int matrix [][] = new int[1][0];
		matrix[0] = new int[]{2,3};
		Solution s = new Solution();
		s.spiralOrder(matrix);
	}
}
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> res = new ArrayList<Integer>();
        if(matrix == null || matrix.length==0 || matrix[0].length==0) return res;
        doit(matrix,res,0,0,matrix.length-1,matrix[0].length-1);
        return res;
    }
    private void doit(int [][] matrix ,List<Integer> res,int sx,int sy,int ex,int ey){
        if(sx>ex || sy>ey) return ;
        if(sx==ex){
        	for(int i= sy;i<=ey;i++){
        		res.add(matrix[sx][i]);
        	}
        	return ;
        }
        if(sy==ey){
        	for(int i=sx;i<=ex;i++){
        		res.add(matrix[i][sy]);
        	}
        	return ;
        }
        for(int i= sy;i<=ey;i++){
            res.add(matrix[sx][i]);
        }
        sx++;
        for(int i=sx;i<=ex;i++){
            res.add(matrix[i][ey]);
        }
        sx--;
        ey--;
        for(int i=ey;i>=sy;i--){
          res.add(matrix[ex][i])   ;
        }
        ey++;
        ex--;
        for(int i=ex;i>sx;i--){
            res.add(matrix[i][sy]);
        }
        ex++;
        doit(matrix,res,sx+1,sy+1,ex-1,ey-1);
        
    }
}